package stream01;

import org.junit.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.stream.Stream;

/**
 * 集合或数组流对象的获取
 *   集合:
 *     Collection体系:都是通过stream()方法来获取一个流对象
 *        List
 *        Set
 *     Map体系:需要转换到Collection体系的集合,调用stream()方法获取流对象
 *       HashMap
 *    数组:
 *      static <T> Stream<T> of(T... values)
 *             返回一个元素为指定值的顺序排列的流。
 */
public class StreamDemo02 {
	@Test
	public void test01() {
		Stream<String> stream1 = new ArrayList<String>().stream();//Stream流上的泛型和集合中元素的类型相对应
		                                                          //当我们通过集合对象来调用steam()方法,相当于
		                                                        //将集合中的元素添加到Stream流中等待操作

		Stream<Integer> stream2 = new HashSet<Integer>().stream();//Stream流上的泛型和集合中元素的类型相对应
	}

	@Test
	public void test02() {
	      new HashMap<Integer,String>().keySet().stream();//需要将Map转换成Colletion体系的集合就可以调用stream方法获取流对象
		                                                  //将一个个key添加到stream流
		  new HashMap<Integer,String>().entrySet().stream();//将一个个entry对象(key=value)添加到stream流中
	}

	@Test
	public void test03() {
		int[] arr = {1, 3, 9};
		Stream<int[]> stream1 = Stream.of(arr); //如果通过基本类型数组获取一个流对象,此时流中只有一个元素:这个数组对象

		Integer[] arr2={1,3,9};
		Stream<Integer> stream2 = Stream.of(arr2);//我们通过基本类型对应的包装类的引用类型数组,获取流对象,此时相当于将数组中的元素添加到流中等待操作

		Stream<String> stream3 = Stream.of("abc", "def", "ghk");//通过一串数据获取一个流对象
		Stream<Integer> stream4 = Stream.of(3, 5, 7);

	}
}
